package student_System;

import java.util.ArrayList;
import java.util.Scanner;

public class studentSystem {
    public static void studentSystemIN() {
        Scanner sc =new Scanner(System.in);
        //创建列表来存储学生的信息
        ArrayList<student> list = new ArrayList<>();
        loop:while(true){
            System.out.println("-------------欢迎来到黑马学生管理系统----------------");
            System.out.println("1：添加学生");
            System.out.println("2：删除学生");
            System.out.println("3：修改学生");
            System.out.println("4：查询学生");
            System.out.println("5：退出");
            System.out.println("请输入您的选择:");
            String choose = sc.next();
            switch (choose) {
                case "1" :
                    //System.out.println("添加学生");
                    addStu(list);
                    break ;
                case "2" :
                    //System.out.println("删除学生");
                    delStu(list);
                    break ;
                case "3" :
                    //System.out.println("修改学生");
                    xgStu(list);
                    break ;
                case "4" :
                    //System.out.println("查询学生");
                    getStu(list);
                    break ;
                case "5" :
                    System.out.println("退出");
                    break loop;
                default :
                    System.out.println("没有这个选项！");
                    break ;
            }
        }
    }

    //添加学生的方法
    public static void addStu(ArrayList<student> list) {
        Scanner sc = new Scanner(System.in);
        //创建新的学生对象
        student s = new student();
        System.out.println("请输入学生的学号：");
        String id = sc.next();

        System.out.println("请输入学生的姓名：");
        String name = sc.next();

        System.out.println("请输入学生的年龄：");
        int age = sc.nextInt();


        System.out.println("请输入学生的家庭住址：");
        String dz = sc.next();

        //判断id是否重复
        boolean flag = contins(list, id);
        if (flag) {
            //重复了，提示添加失败
            System.out.println("学生学号重复，添加失败");
        }else {
            //不重复，添加
            s.setId(id);
            s.setName(name);
            s.setAge(age);
            s.setDz(dz);
            list.add(s);
            System.out.println("添加成功");
        }
    }

    //删除学生的方法
    public static void delStu(ArrayList<student> list){
        //获取要删除的学生的id
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的学生的学号：");
        String id = sc.next();
        int index = getIndex(list, id);
        boolean falg = contins(list, id);
        if (falg) {
            //id存在
            list.remove(index);
            System.out.println("学号为" + id +"的学生信息删除成功");

        }else {
            System.out.println("学生的学号不存在，删除失败");
        }
    }

    //修改学生的方法实现
    public static void xgStu(ArrayList<student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的学生的学号：");
        String id = sc.next();
        //获取这个学号对应的索引
        int index = getIndex(list,id);
        boolean flag = contins(list, id);
        if (flag) {
            //存在则修改
            System.out.println("请输入修改后的名字：");
            String name = sc.next();
            list.get(index).setName(name);

            System.out.println("请输入修改后的年龄：");
            int age = sc.nextInt();
            list.get(index).setAge(age);

            System.out.println("请输入修改后的家庭住址：");
            String dz = sc.next();
            list.get(index).setDz(dz);
        }else {
            //不存在则提示不存在
            System.out.println("当前无此学生信息");
        }
    }

    //查询方法实现
    public static void getStu(ArrayList<student> list){
        //判断集合的元素，如果没有元素则提示先去添加学生
        if (list.size() >0) {
            System.out.println("id\t\t\t姓名\t\t年龄\t\t家庭住址");
            for (int i = 0; i < list.size(); i++) {
                student s = list.get(i);
                System.out.println(s.getId() + "\t\t\t" + s.getName() +"\t\t" + s.getAge() + "\t\t" + s.getDz());
            }
        }else {
            System.out.println("当前没有学生信息，请添加后再查询学生信息");
        }
    }

    //定义一个方法来判断id是否唯一
    public static boolean contins(ArrayList<student> list,String id){
        //如果大于等于0则说明重复了，若返回-1则表明在list里面找不到相同的id，则返回false
        return getIndex(list, id) >= 0;
    }

    //定义通过id获取索引的一个方法来获取索引
    public static int getIndex(ArrayList<student> list,String id) {
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            //的到每一个学生对象
            student stu = list.get(i);
            //获取每一个学生对象的id
            String sid = stu.getId();
            if (sid.equals(id)) {
                //如果id相同就返回对应的索引
                return i;
            }
        }
        //否则就返回-1
        return -1;
    }
}
